package sc.senai.br.avaliacao;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Random;

public final class JogadorImpl extends UnicastRemoteObject implements Jogador {

    public static final String NOME_PADRAO = "Zeh";
    private final String nome;
    private final String registro;

    public JogadorImpl(Comite comite, String nome) throws RemoteException {
        this.nome = (nome.trim().isEmpty() ? "Zeh" : nome.trim());
        this.registro = comite.registra(this);
    }

    public String getNome() throws RemoteException {
        return this.nome;
    }

    public void novaRodada(Rodada rodada) throws RemoteException {
        Random random = new Random();
        int escolha = random.nextInt(Jogadas.values().length);
        Jogadas jogada = Jogadas.values()[escolha];
        System.out.println(String.format("Jogador '%s' escolheu %s para rodada #%02d.", new Object[] { this.nome, jogada.name(), Integer.valueOf(rodada.getRodada()) }));

        rodada.registraJogada(this.registro, jogada);
    }

    public void finalCampeonato(String campeonato, String vencedor) throws RemoteException {
        String resultado = vencedor.trim().equals(this.nome) ? "GANHEI!!! \\o/" : "perdi... :-(";
        System.out.println(String.format("'%s' diz: No campeonato '%s' eu %s", new Object[] { this.nome, campeonato, resultado }));
    }
}
